package com.zhuoyue.biz.core.command.cmd.common.fbf;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: FingerprintRemotePsdDeal
 * @Description: 指纹锁远程加密解密
 * @author wjming
 * @Date 2021-07-14 20:20
 */
public class FingerprintRemotePsdDeal {
    /**
     * 加密
     *
     * @param bytes
     * @param key
     * @return
     */
    public static byte[] en(byte[] bytes, int key) {
        if (bytes == null) {
            return null;
        }
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] ^= key;
            key = bytes[i];
        }
        return bytes;
    }


    public static List<Integer> encrypt(List<Integer> bytes,Integer key) {

        List<Integer> list = new ArrayList<>();
        if (bytes == null) {
            return null;
        }
        for (int i = 0; i < bytes.size(); i++) {
            Integer by = key ^ bytes.get(i);
            key = by;
            list.add(by);
        }
        return list;
    }
//
//    /**
//     * 解密
//     *
//     * @param bytes
//     * @return
//     */
//    public static List<Integer> decrypt(List<Integer> bytes, int key) {
//        List<Integer> list = new ArrayList<>();
//        List<Integer> list2 = new ArrayList<>();
//        if (bytes == null) {
//            return null;
//        }
//        for (int i = bytes.size() - 1; i > 0; i--) {
//            Integer by = bytes.get(i) ^ bytes.get(i - 1);
//            list.add(by);
//        }
//        Integer bys = bytes.get(0) ^ key;
//        list.add(bys);
//        for (int i = list.size() - 1; i >= 0; i--) {
//            list2.add(list.get(i));
//        }
//        return list2;
//    }


//    public static void main(String[] args) {
//        List<Integer> list = new ArrayList<>();
//        list.add(01);
//        list.add(02);
//        list.add(03);
//        list.add(04);
//        list.add(05);
//        list.add(06);
//        List<Integer> encrypt = encrypt(list, 0x37);
//        for (int i = 0; i < encrypt.size(); i++) {
//            System.out.println("encrypt = " + encrypt.get(i));
//        }
//        System.out.println("--------- ");
//        List<Integer> decrypt = decrypt(encrypt, 0x37);
//        for (int i = 0; i < decrypt.size(); i++) {
//            System.out.println("decrypt = " + decrypt.get(i));
//        }
//    }

    public static void main(String[] args) {
        List<Integer> ints = new ArrayList<>(6);
        ints.add(Integer.parseInt("31",16));
        ints.add(Integer.parseInt("34",16));
        ints.add(Integer.parseInt("37",16));
        ints.add(Integer.parseInt("32",16));
        ints.add(Integer.parseInt("35",16));
        ints.add(Integer.parseInt("38",16));
        List<Integer> en = encrypt(ints,Integer.parseInt("37",16));
        for (int i = 0; i < en.size(); i++) {
            System.out.println("args = " + Integer.toHexString(en.get(i)));
        }

    }

    public static void main1(String[] args) {
        System.out.println("args = " + (0x31 ^ 0x37));
    }

}
